package com.zw.cloud.common.utils;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.net.NetUtil;
import cn.hutool.core.swing.clipboard.ClipboardUtil;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.extra.emoji.EmojiUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.zw.cloud.common.entity.dto.FeishuMsgDTO;
import com.zw.cloud.common.entity.vo.LocationVO;
import com.zw.cloud.common.utils.bean.BeanUtils;

import java.io.File;

public class HutoolUtils {
    public static void main(String[] args) {
        System.out.println(Validator.isNumber("-010.100")); //true
        System.out.println(Validator.hasChinese("han01"));  //false
        System.out.println(ReUtil.getFirstNumber("han01")); // 1
        System.out.println(ReUtil.getFirstNumber("han100"));// 100
        System.out.println(Validator.isEmail("shaoxiulong.sct@challenge-21c.com"));

        System.out.println(Convert.numberToChinese(10889.72356, false)); // 一万零八百八十九点七二
        System.out.println(Convert.numberToChinese(12653, true));// 壹万贰仟陆佰伍拾叁
        System.out.println(Convert.digitToChinese(67556.32)); //陆万柒仟伍佰伍拾陆元叁角贰分
        System.out.println(Convert.numberToSimple(1200)); // 1.2k

        System.out.println(Convert.chineseToNumber("一")); // 1
        System.out.println(Convert.numberToChinese(1,false)); // 一

        LocationVO locationVO = null;
        System.out.println(Opt.ofNullable(locationVO).map(LocationVO::getName).get());//null  不会抛出异常


        System.out.println(EmojiUtil.toAlias("😄"));//:smile:
        System.out.println(EmojiUtil.toUnicode(":smile:"));//😄

        System.out.println(ObjectUtil.defaultIfNull(locationVO,new LocationVO()));
        // 图像类型转换：GIF=》JPG、GIF=》PNG、PNG=》JPG、PNG=》GIF(X)、BMP=》PNG
        //ImgUtil.convert(FileUtil.file("e:/test2.png"), FileUtil.file("e:/test2Convert.jpg"));
        // gray 彩色转为黑白
        ImgUtil.gray(FileUtil.file("d:/1.jpg"), FileUtil.file("d:/11.png"));

        System.out.println("getLocalMacAddress" + NetUtil.getLocalMacAddress()); // d0-3c-1f-30-32-d4
        testDeepClone();
        System.out.println("获取剪贴板内容:" + ClipboardUtil.getStr());
        System.out.println(StrFormatter.format("this is {} for {}", "a", "b"));
        qrCode();
    }

    private static void testDeepClone() {
        FeishuMsgDTO feishuMsgDTO = new FeishuMsgDTO();
        FeishuMsgDTO.MsgContent msgContent = new FeishuMsgDTO.MsgContent();
        msgContent.setText("1");
        feishuMsgDTO.setContent(msgContent);
        FeishuMsgDTO feishuMsgDTO2 = ObjectUtil.cloneByStream(feishuMsgDTO);
        FeishuMsgDTO feishuMsgDTO3 = new FeishuMsgDTO();
        BeanUtils.copyProperties(feishuMsgDTO,feishuMsgDTO3);
        msgContent.setText("update");
        System.out.println("feishuMsgDTO:" + feishuMsgDTO.getContent().getText()); // update
        System.out.println("feishuMsgDTO2:" + feishuMsgDTO2.getContent().getText()); // 1 需要实现序列表接口
        System.out.println("feishuMsgDT3:" + feishuMsgDTO3.getContent().getText()); // update
    }

    private static void qrCode(){
        QrConfig config = new QrConfig(300, 300);
        // 设置边距，即二维码和背景之间的边距
        config.setMargin(3);
        // 设置前景色，即二维码颜色（青色）
        //config.setForeColor(Color.CYAN.getRGB());
        // 设置背景色（灰色）
        //config.setBackColor(Color.GRAY.getRGB());
        // 二维码中的Logo路径
        //config.setImg("d:/qrcode.jpg");
        // 生成二维码到文件，也可以到流
        File generate = QrCodeUtil.generate("http://www.baidu.com/", config, FileUtil.file("d:/qrcode.jpg"));

        System.out.println(QrCodeUtil.decode(new File("d:/qrcode.jpg")));
    }

}
